package me.yangzhi.day_08.adapter;

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import java.util.ArrayList;
import java.util.List;

import me.yangzhi.day_08.R;

/**
 * BannerAdapter - 轮播图适配器
 * 
 * 主要功能：
 * 1. 管理轮播图的图片资源
 * 2. 创建和绑定轮播图视图
 * 3. 处理轮播图的显示逻辑
 * 
 * 使用场景：
 * 1. 首页顶部的轮播图展示
 * 2. 展示促销活动、新品推荐等图片
 */
public class BannerAdapter extends RecyclerView.Adapter<BannerAdapter.BannerViewHolder> {
    // 轮播图图片资源ID列表
    private List<Integer> bannerImages = new ArrayList<>();

    /**
     * 设置轮播图图片资源
     * 
     * @param images 图片资源ID列表
     * 功能：
     * 1. 更新轮播图数据
     * 2. 通知适配器数据已更新
     */
    public void setBannerImages(List<Integer> images) {
        this.bannerImages = images;
        notifyDataSetChanged();
    }

    /**
     * 创建轮播图视图持有者
     * 
     * @param parent 父视图容器
     * @param viewType 视图类型
     * @return 轮播图视图持有者
     * 
     * 功能：
     * 1. 加载轮播图项布局
     * 2. 创建并返回视图持有者
     */
    @NonNull
    @Override
    public BannerViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_banner, parent, false);
        return new BannerViewHolder(view);
    }

    /**
     * 绑定轮播图数据到视图
     * 
     * @param holder 视图持有者
     * @param position 当前位置
     * 
     * 功能：
     * 1. 设置轮播图图片
     * 2. 设置图片的缩放模式
     */
    @Override
    public void onBindViewHolder(@NonNull BannerViewHolder holder, int position) {
        holder.imageView.setImageResource(bannerImages.get(position));
        holder.imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    }

    /**
     * 获取轮播图项数量
     * 
     * @return 轮播图项数量
     */
    @Override
    public int getItemCount() {
        return bannerImages.size();
    }

    /**
     * BannerViewHolder - 轮播图视图持有者
     * 
     * 主要功能：
     * 1. 缓存轮播图视图引用
     * 2. 提供视图访问接口
     */
    static class BannerViewHolder extends RecyclerView.ViewHolder {
        // 轮播图图片视图
        ImageView imageView;

        /**
         * 构造函数
         * 
         * @param itemView 轮播图项视图
         * 功能：
         * 1. 初始化视图引用
         * 2. 绑定轮播图图片视图
         */
        public BannerViewHolder(@NonNull View itemView) {
            super(itemView);
            imageView = itemView.findViewById(R.id.bannerImage);
        }
    }
} 